Face detection is a first stage in applications for finding a face in given image frames and handling facial images. On the other hand, face recognition is a process of comparing a given test image or detected face image with faces stored in a DB (database) to find a specific face or person from the DB.
Recently, face detection and face recognition have been used in various fields. For example, face detection and face recognition are used for biometrics and security to access buildings and doors, intellectual security, customized provision of products in consideration of potential customer's age, and anti-sleep applications to cars.
At present in relation to security in CCTV cameras, it is necessary to apply face detection or face recognition technology, but images are manually monitored from CCTV cameras in different places or locations. Automatically detecting and recognizing faces in a security system by using CCTV cameras and enabling tracking after the face recognition would provide quite a few benefits.
Meanwhile, face detection and face recognition may also be used for identifying users for mobile phones, smart phones, tablet PCs, and laptop computers.
Since typical face detection and face recognition techniques involve huge data to be processed and a huge amount of operations, this is a difficulty in real-time processing. Therefore, they are not fully applicable to various fields (especially, security).
Furthermore, the resolution of input images used in face detection is getting higher day by day (for example, from SD (Standard Definition) to HD (High Definition)), and real-time processing requires more computer power. In addition, as the number of images in a DB used in face recognition increases, the face recognition process takes more time.
Meanwhile, for maximizing graphic processing, general-purpose GPUs (Graphics Processing Units) are widely used. If applications have high parallelism, the GPUs may perform the applications more rapidly than general CPUs. Such a graphic processing unit has been generally designed and used for servers or personal computers.
Because of the needs for maximized performance of portable terminals such as smart phones or tablet PCs, appearance of and needs for various parallel processing applications, embedded GPUs are thus mass-produced now and applied to portable terminals. The aforementioned embedded GPU may be generally packaged into a single chipset together with an AP (Application Processor) to process various parallel processing applications in portable terminals. The embedded GPU may be, for example, Tegra K1, Adreno, Mali or PowerVR. The embedded GPU supports the OpenCL framework or the CUDA framework that may support applications of various fields executable on an embedded GPU, and includes a plurality of microprocessing units. For example, 192 microprocessing units may be included in an embedded GPU, and execute threads that are program's processing unit. Microprocessing units may be clustered, and a macroprocessing unit consists of the clustered microprocessing units. The embedded GPU may also include a plurality of macroprocessing units. The macroprocessing units and the microprocessing units may be named differently depending on each GPU type.
Using a GPU may reduce CPU or AP processing loads, and specialized parallel processing capability thereof may improve processing performance. However, if an application is configured for sequential processing, using a GPU worsens processing performance because of sending/receiving data to/from a CPU or AP and managing memories.
Processing methods used for face detection and recognition include a processing method based on Haar features and a processing method based on LBP (Local Binary Pattern) features. Since a facial identification method based on the LBP features is more efficient than a method based on the Haar features in terms of LBP feature differentiation and calculation, a current tendency is that processing methods based on Haar features are replaced by the processing method based on LBP features.
The facial identification method based on LBP features is an algorithm based on an assumption of sequential processing, and it is thus necessary to apply various optimization technologies to apply the method to a GPU to improve performance resulting from application to the GPU.
As such, there is a need for a facial identification method, a facial identification apparatus and a computer program for executing the method in order to improve processing performance based on LBP features used for facial identification on an apparatus or a chipset with a plurality of processing units.